/*
 * PyEquilibriumSystem.cpp
 *
 *  Created on: 12 Mar 2012
 *      Author: allan
 */

#include "PyEquilibriumSystem.h"

// GeoReact includes
#include <GeoReact.h>

// Boost includes
#include <boost/python.hpp>
using namespace boost::python;

void export_EquilibriumSystem()
{
	class_<EquilibriumSystem, bases<Multiphase>>("EquilibriumSystem", init<>())
		.def(init<const EquilibriumSystem&>())
		
		.def(init<const Multiphase&, const ReactionSystem&>())
		
		.add_property("num_equilibrium_reactions",
			make_function(&EquilibriumSystem::GetNumEquilibriumSpecies))
		
		.add_property("num_equilibrium_species",
			make_function(&EquilibriumSystem::GetNumEquilibriumSpecies))
		
		.add_property("equilibrium_reactions",
			make_function(&EquilibriumSystem::GetEquilibriumReactions,
				return_internal_reference<>()))
		
		.add_property("equilibrium_species",
			make_function(&EquilibriumSystem::GetEquilibriumSpecies,
				return_internal_reference<>()))
		
		.add_property("idx_equilibrium_species",
			make_function(&EquilibriumSystem::GetIndicesEquilibriumSpecies,
				return_internal_reference<>()))
		
		.add_property("stochiometric_matrix_Ue",
			make_function(&EquilibriumSystem::GetStoichiometricMatrixUe,
				return_internal_reference<>()))
		
		.add_property("elemental_composition_matrix_We",
			make_function(&EquilibriumSystem::GetElementalCompositionMatrixWe,
				return_internal_reference<>()));
}
